package top.ochiamalu.aioj.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import top.ochiamalu.aioj.domain.dto.set.AddSetDTO;
import top.ochiamalu.aioj.domain.dto.set.PageSetDTO;
import top.ochiamalu.aioj.domain.dto.set.UpdateSetDTO;
import top.ochiamalu.aioj.domain.entity.Set;
import top.ochiamalu.aioj.domain.vo.set.SetDetailVO;
import top.ochiamalu.aioj.domain.vo.set.SetOptionVO;
import top.ochiamalu.aioj.domain.vo.set.SetVO;

import java.util.List;


/**
 * 题集服务
 *
 * @author ochiamalu
 * @date 2025/01/28
 */
public interface SetService extends IService<Set> {

    /**
     * 添加题集
     *
     * @param addSetDTO 添加题集到
     * @return {@link Long }
     */
    Long addSet(AddSetDTO addSetDTO);

    /**
     * 列表主页
     *
     * @return {@link List }<{@link SetVO }>
     */
    List<SetVO> listHome();

    /**
     * 列表推荐
     *
     * @return {@link List }<{@link SetOptionVO }>
     */
    List<SetOptionVO> listRecommend();


    /**
     * 得到题集细节
     *
     * @param id 身份证件
     * @return {@link SetDetailVO }
     */
    SetDetailVO getSetDetail(Long id);

    /**
     * 按ID更新
     *
     * @param updateSetDTO update题集到
     * @return boolean
     */
    boolean updateById(UpdateSetDTO updateSetDTO);

    /**
     * 分页题集
     *
     * @param pageSetDTO 页面题集DTO
     * @return {@link Page }<{@link SetVO }>
     */
    Page<SetVO> pageSet(PageSetDTO pageSetDTO);

    /**
     * 删除题集
     *
     * @param id ID
     * @return boolean
     */
    boolean deleteSet(Long id);
}
